<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //异步编程
        //实例1、1s后打印 111   2秒后打印222  3秒后打印333

    //   function one(){
    //       setTimeout(() => {
    //           console.log(111);
    //           iterator.next();
    //       },1000)
    //   }

      
    //   function two(){
    //       setTimeout(() => {
    //           console.log(222);
    //           iterator.next();
    //       },2000)
    //   }

    //   function thr(){
    //       setTimeout(() => {
    //           console.log(333);
    //           iterator.next();
    //       },3000)
    //   }

    //   function * gen(){
    //       yield one();
    //       yield two();
    //       yield thr()
    //   }

    //   //调用生成器函数
    //   let iterator = gen();
    //   iterator.next();




      //实例2、模拟用户下单
      //先获取用户的数据、然后再获取订单的数据、再获取商品的数据
       function getUsers(){
           setTimeout(() => {
               let data = '用户数据';
               iterators.next(data);
           },1000)
       }

       function getOrder(){
           setTimeout(() => {
               let data = '订单数据';
               iterators.next(data);
           },1000)
       }

       function getGoods(){
           setTimeout(() => {
               let data = '商品数据';
               iterators.next(data);
           },1000)
       }

       function * gen(){
           let users = yield getUsers();
           console.log(users);
           let order = yield getOrder();
           console.log(order);
           let goods = yield getGoods();
           console.log(goods);
       }


       //调用生成器函数
       let iterators = gen();
       iterators.next();
    </script>
</body>
</html>